Cerrado. Esta pregunta necesita detalles o claridad. Actualmente no acepta respuestas. ¿Quieres mejorar esta pregunta? Agrega detalles y aclara el problema editando esta publicación. Cerrado hace 1 año. Mejora esta pregunta Estoy haciendo un desafío de código y quiero obtener los primeros 3 valores de mi matriz especificando el índice de inicio y obteniendo solo los primeros (3 o pueden tener cualquier longitud) valores del índice de inicio. Probé este código y está funcionando, pero la estructura del código es demasiado larga, entonces, ¿cómo puedo acortarlo para que sea fácil de entender? int n = 10; firma doble = nueva doble [] {1, 1, 1}; doble [] ret = nuevo doble [n]; suma doble = 0; ret [0] = firma [0]; ret [1] = firma [1]; ret [2] = firma [2]; int x, i; para (i = 0; i
2021-01-31 08:21:20
Usando LINQ puedes probar algo como esto: valores var = array.Skip (índice) .Tomado) .ToArray (); Donde índice es el índice del primer artículo yn el número de artículos que desea seleccionar. P.ej. https://dotnetfiddle.net/Pk1rwY Como nota al margen. Usar LINQ no significa que su código sea más rápido. Sería más compacto / legible, etc. Para evaluar el rendimiento de su código, debe usar algo como BenchmarkDotNet. | Sin solución Linq: private static T [] Extract(T [] fuente, int fromIndex, int length) { si (nulo == fuente) lanzar una nueva ArgumentNullException (nombre de (fuente)); else if (fromIndex <0) lanzar una nueva ArgumentOutOfRangeException (nameof (fromIndex), "Desde el índice no debe ser negativo"); else if (longitud <0) lanzar una nueva ArgumentOutOfRangeException (nombre de (longitud), "La longitud no debe ser negativa"); if (fromIndex> = source.Length || length == 0) devolver nuevo T [0]; T [] resultado = nuevo T [Math.Min (length, source.Length - fromIndex)]; Array.Copy (fuente, fromIndex, resultado, 0, result.Length); devolver resultado; } Entonces doble [] firma = nuevo doble [] {0, 1, 2, 3, 4, 5}; double [] ret = Extraer (firma, 3, 2); Console.Write (string.Join (",", ret)); Salir: 3, 4 | A partir de su pregunta, debe aprovechar los operadores .Take y .Skip. var resultado = matriz.Skip (índiceInicio) .Tomar (númeroDeElementos) Por lo tanto, a partir de su código, parece que está tratando de hacer algo un poco diferente, es decir, sumar elementos. El operador .Sum podría ser de ayuda aquí. | No es la respuesta que estás buscando? Lea otras preguntas en las etiquetas c # arrays linq o formule su propia pregunta.